/**
 * 376.摆动序列
 */
public class Exerciser4 {
    public int wiggleMaxLength(int[] nums) {
        // 统计 波峰与波谷的个数
        int  n = nums.length;
        if(n < 2) {
            return n;
        }
        int ret = 0;
        int left = 0; // 记录 i 位置的左面是上升(正)还是下降(负)
        for(int i = 0;i < n - 1;i++) {
            int right = nums[i + 1] - nums[i]; // 记录 i 位置的右面是上升(正)还是下降(负)
            // 判断，right为0，表示重复数据，进行跳过
            if(right == 0) {
                continue;
            }
            if(left * right <= 0) {
                // 左右相反，说明这个i位置是 波谷或者波峰
                ret++;
            }
            // 更新left，因为i往后进行遍历
            left = right;
        }
        // 添加最后一个位置的次数
        return ret + 1;
    }
}
